suppressPackageStartupMessages(library(tidyverse))
suppressPackageStartupMessages(library(sjPlot))
suppressPackageStartupMessages(library(lme4))
suppressPackageStartupMessages(library(performance))
suppressPackageStartupMessages(library(nortest))
options(scipen = 999)
dat_model <- read_csv("data/data_model.csv")
# buliding model
baseline_model <-
lmer(NA_sum ~ age + gender + beep + day +
event_unpleasantness_centered +
(event_unpleasantness_centered | id),
data = dat_model
)
# model outputs
summary(baseline_model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: NA_sum ~ age + gender + beep + day + event_unpleasantness_centered +
## (event_unpleasantness_centered | id)
## Data: dat_model
##
## REML criterion at convergence: 33534.4
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.5677 -0.4675 -0.0862 0.2792 7.6403
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## id (Intercept) 0.86360 0.9293
## event_unpleasantness_centered 0.03975 0.1994 0.63
## Residual 0.56096 0.7490
## Number of obs: 14265, groups: id, 247
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.3938425 0.1654936 2.380
## age -0.0085250 0.0039792 -2.142
## genderMale -0.2610865 0.1350536 -1.933
## genderOther -0.1046100 0.7399324 -0.141
## beep 0.0052154 0.0029603 1.762
## day -0.0047454 0.0008428 -5.631
## event_unpleasantness_centered 0.3095254 0.0150901 20.512
##
## Correlation of Fixed Effects:
## (Intr) age gndrMl gndrOt beep day
## age -0.912
## genderMale -0.093 -0.066
## genderOther -0.039 0.016 0.031
## beep -0.076 0.002 0.000 0.001
## day -0.045 0.000 0.003 -0.003 0.008
## evnt_nplsn_ 0.202 0.001 -0.046 0.010 0.034 0.012
tab_model(baseline_model, show.std = T)
| NA sum | |||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p |
| (Intercept) | 0.39 | 0.13 | 0.07 – 0.72 | 0.02 – 0.23 | 0.017 |
| age | -0.01 | -0.09 | -0.02 – -0.00 | -0.18 – -0.01 | 0.032 |
| gender [Male] | -0.26 | -0.21 | -0.53 – 0.00 | -0.42 – 0.00 | 0.053 |
| gender [Other] | -0.10 | -0.08 | -1.55 – 1.35 | -1.25 – 1.09 | 0.888 |
| beep | 0.01 | 0.01 | -0.00 – 0.01 | -0.00 – 0.02 | 0.078 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 |
|
event unpleasantness centered |
0.31 | 0.32 | 0.28 – 0.34 | 0.29 – 0.35 | <0.001 |
| Random Effects | |||||
| σ2 | 0.56 | ||||
| τ00 id | 0.86 | ||||
| τ11 id.event_unpleasantness_centered | 0.04 | ||||
| ρ01 id | 0.63 | ||||
| ICC | 0.62 | ||||
| N id | 247 | ||||
| Observations | 14265 | ||||
| Marginal R2 / Conditional R2 | 0.111 / 0.665 | ||||
# assumption checks
check_collinearity(baseline_model)
plot_model(baseline_model, type = "diag")
## Warning in checkMatrixPackageVersion(): Package version inconsistency detected.
## TMB was built with Matrix version 1.5.3
## Current Matrix version is 1.4.1
## Please re-install 'TMB' from source using install.packages('TMB', type = 'source') or ask CRAN for a binary version of 'TMB' matching CRAN's 'Matrix' package
## Warning in checkDepPackageVersion(dep_pkg = "TMB"): Package version inconsistency detected.
## glmmTMB was built with TMB version 1.9.1
## Current TMB version is 1.9.2
## Please re-install glmmTMB from source or restore original 'TMB' package (see '?reinstalling' for more information)
## [[1]]
## `geom_smooth()` using formula 'y ~ x'
##
## [[2]]
## [[2]]$id
## `geom_smooth()` using formula 'y ~ x'
##
##
## [[3]]
##
## [[4]]
## `geom_smooth()` using formula 'y ~ x'
#check_model(baseline_model)
# visualizing predicted values
plot_model(baseline_model)
# goodness of fit indicators
AIC_baseline <- AIC(baseline_model)
BIC_baseline <- BIC(baseline_model)
# normality test for residuals
baseline_model_residuals <- residuals(baseline_model)
lillie.test(baseline_model_residuals)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: baseline_model_residuals
## D = 0.14284, p-value < 0.00000000000000022
# normality test for NA_sum
lillie.test(dat_model$NA_sum)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: dat_model$NA_sum
## D = 0.21912, p-value < 0.00000000000000022
# building model
trait_model <-
lmer(
NA_sum ~ age + gender + beep + day +
event_unpleasantness_centered * trait_rumination +
(event_unpleasantness_centered | id),
data = dat_model
)
# model outputs
summary(trait_model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: NA_sum ~ age + gender + beep + day + event_unpleasantness_centered *
## trait_rumination + (event_unpleasantness_centered | id)
## Data: dat_model
##
## REML criterion at convergence: 33508.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.5777 -0.4677 -0.0848 0.2800 7.6410
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## id (Intercept) 0.77855 0.8824
## event_unpleasantness_centered 0.03429 0.1852 0.59
## Residual 0.56096 0.7490
## Number of obs: 14265, groups: id, 247
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.2160764 0.1728315 1.250
## age -0.0047372 0.0041325 -1.146
## genderMale -0.1152025 0.1390809 -0.828
## genderOther 0.0497428 0.7339194 0.068
## beep 0.0051633 0.0029599 1.744
## day -0.0047750 0.0008425 -5.668
## event_unpleasantness_centered 0.3053063 0.0143028 21.346
## trait_rumination 0.3551413 0.0664066 5.348
## event_unpleasantness_centered:trait_rumination 0.0779311 0.0150512 5.178
##
## Correlation of Fixed Effects:
## (Intr) age gndrMl gndrOt beep day evnt__ trt_rm
## age -0.925
## genderMale -0.190 0.040
## genderOther -0.071 0.047 0.059
## beep -0.069 -0.001 -0.002 0.000
## day -0.041 -0.002 0.002 -0.003 0.008
## evnt_nplsn_ 0.159 0.011 -0.036 0.013 0.035 0.011
## trait_rmntn -0.308 0.281 0.289 0.082 -0.006 -0.005 -0.014
## evnt_npl_:_ 0.010 -0.018 0.030 -0.015 0.003 -0.003 -0.078 0.457
tab_model(trait_model, show.std = T)
| NA sum | ||||||
|---|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p | std. p |
| (Intercept) | 0.22 | 0.11 | -0.12 – 0.55 | 0.01 – 0.21 | 0.211 | 0.033 |
| age | -0.00 | -0.05 | -0.01 – 0.00 | -0.14 – 0.04 | 0.252 | 0.252 |
| gender [Male] | -0.12 | -0.09 | -0.39 – 0.16 | -0.31 – 0.13 | 0.408 | 0.408 |
| gender [Other] | 0.05 | 0.04 | -1.39 – 1.49 | -1.12 – 1.20 | 0.946 | 0.946 |
| beep | 0.01 | 0.01 | -0.00 – 0.01 | -0.00 – 0.02 | 0.081 | 0.081 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 | <0.001 |
|
event unpleasantness centered |
0.31 | 0.32 | 0.28 – 0.33 | 0.29 – 0.35 | <0.001 | <0.001 |
| trait rumination | 0.36 | 0.28 | 0.22 – 0.49 | 0.18 – 0.38 | <0.001 | <0.001 |
|
event unpleasantness centered × trait rumination |
0.08 | 0.08 | 0.05 – 0.11 | 0.05 – 0.11 | <0.001 | <0.001 |
| Random Effects | ||||||
| σ2 | 0.56 | |||||
| τ00 id | 0.78 | |||||
| τ11 id.event_unpleasantness_centered | 0.03 | |||||
| ρ01 id | 0.59 | |||||
| ICC | 0.60 | |||||
| N id | 247 | |||||
| Observations | 14265 | |||||
| Marginal R2 / Conditional R2 | 0.188 / 0.674 | |||||
# assumption checks
check_collinearity(trait_model)
plot_model(trait_model, type = "diag")
## [[1]]
## `geom_smooth()` using formula 'y ~ x'
##
## [[2]]
## [[2]]$id
## `geom_smooth()` using formula 'y ~ x'
##
##
## [[3]]
##
## [[4]]
## `geom_smooth()` using formula 'y ~ x'
#check_model(trait_model)
# visualizing predicted values
plot_model(trait_model)
# goodness of fit indicators
AIC_trait <- AIC(trait_model)
BIC_trait <- BIC(trait_model)
coefplot_trait <-
plot_model(trait_model,
type = "std",
rm.terms = c("age", "gender [Male]", "gender [Other]", "beep", "day", "event_unpleasantness_centered"),
ci.lvl = 0.95,
std.est = T,
title = "",
show.values = TRUE,
colors = "black",
axis.labels = c("Trait rumination * Perceived stress", "Trait rumination"),
axis.title = "Standardized β coefficients"
) +
ylim(0, 0.6) +
theme_minimal() +
theme(axis.line = element_line(size = .3),
axis.text = element_text(size = 10, color = "black"),
axis.title.x = element_text(size = 12, color = "black")
)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
coefplot_trait
# building model
mean_state_model <-
lmer(
NA_sum ~ age + gender + beep + day +
event_unpleasantness_centered * mean_state_rumi_grand_centered +
(event_unpleasantness_centered | id),
data = dat_model
)
# model outputs
summary(mean_state_model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: NA_sum ~ age + gender + beep + day + event_unpleasantness_centered *
## mean_state_rumi_grand_centered + (event_unpleasantness_centered | id)
## Data: dat_model
##
## REML criterion at convergence: 33378.9
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.5871 -0.4680 -0.0864 0.2809 7.6518
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## id (Intercept) 0.42164 0.6493
## event_unpleasantness_centered 0.03091 0.1758 0.51
## Residual 0.56109 0.7491
## Number of obs: 14265, groups: id, 247
##
## Fixed effects:
## Estimate
## (Intercept) 0.1402751
## age -0.0032922
## genderMale -0.0501490
## genderOther 0.1741375
## beep 0.0049676
## day -0.0048631
## event_unpleasantness_centered 0.3068529
## mean_state_rumi_grand_centered 0.9105524
## event_unpleasantness_centered:mean_state_rumi_grand_centered 0.1227505
## Std. Error t value
## (Intercept) 0.1291530 1.086
## age 0.0031130 -1.058
## genderMale 0.1062399 -0.472
## genderOther 0.5730614 0.304
## beep 0.0029591 1.679
## day 0.0008409 -5.783
## event_unpleasantness_centered 0.0138163 22.209
## mean_state_rumi_grand_centered 0.0598964 15.202
## event_unpleasantness_centered:mean_state_rumi_grand_centered 0.0188286 6.519
##
## Correlation of Fixed Effects:
## (Intr) age gndrMl gndrOt beep day evnt__ mn____
## age -0.922
## genderMale -0.129 -0.027
## genderOther -0.053 0.028 0.045
## beep -0.095 -0.001 -0.002 0.001
## day -0.055 -0.004 0.005 -0.004 0.007
## evnt_nplsn_ 0.139 0.005 -0.033 0.010 0.036 0.011
## mn_stt_rm__ -0.182 0.155 0.200 0.061 -0.009 -0.001 -0.015
## evnt__:____ 0.016 -0.021 0.001 -0.012 0.004 -0.002 -0.063 0.387
tab_model(mean_state_model, show.std = T)
| NA sum | |||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p |
| (Intercept) | 0.14 | 0.09 | -0.11 – 0.39 | 0.01 – 0.16 | 0.277 |
| age | -0.00 | -0.04 | -0.01 – 0.00 | -0.10 – 0.03 | 0.290 |
| gender [Male] | -0.05 | -0.04 | -0.26 – 0.16 | -0.21 – 0.13 | 0.637 |
| gender [Other] | 0.17 | 0.14 | -0.95 – 1.30 | -0.77 – 1.05 | 0.761 |
| beep | 0.00 | 0.01 | -0.00 – 0.01 | -0.00 – 0.02 | 0.093 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 |
|
event unpleasantness centered |
0.31 | 0.32 | 0.28 – 0.33 | 0.29 – 0.35 | <0.001 |
|
mean state rumi grand centered |
0.91 | 0.52 | 0.79 – 1.03 | 0.45 – 0.58 | <0.001 |
|
event unpleasantness centered × mean state rumi grand centered |
0.12 | 0.09 | 0.09 – 0.16 | 0.06 – 0.12 | <0.001 |
| Random Effects | |||||
| σ2 | 0.56 | ||||
| τ00 id | 0.42 | ||||
| τ11 id.event_unpleasantness_centered | 0.03 | ||||
| ρ01 id | 0.51 | ||||
| ICC | 0.46 | ||||
| N id | 247 | ||||
| Observations | 14265 | ||||
| Marginal R2 / Conditional R2 | 0.372 / 0.659 | ||||
# assumption checks
check_collinearity(mean_state_model)
plot_model(mean_state_model, type = "diag")
## [[1]]
## `geom_smooth()` using formula 'y ~ x'
##
## [[2]]
## [[2]]$id
## `geom_smooth()` using formula 'y ~ x'
##
##
## [[3]]
##
## [[4]]
## `geom_smooth()` using formula 'y ~ x'
#check_model(mean_state_model)
# visualizing predicted values
plot_model(mean_state_model)
# goodness of fit indicators
AIC_mean_state <- AIC(mean_state_model)
BIC_mean_state <- BIC(mean_state_model)
coefplot_mean_state <-
plot_model(mean_state_model,
type = "std",
rm.terms = c("age", "gender [Male]", "gender [Other]", "beep", "day", "event_unpleasantness_centered"),
ci.lvl = 0.95,
std.est = T,
title = "",
show.values = TRUE,
colors = "black",
axis.labels = c("Mean state rumination * Perceived stress", "Mean state rumination"),
axis.title = "Standardized β coefficients"
) +
ylim(0, 0.6) +
theme_minimal() +
theme(axis.line = element_line(size = .3),
axis.text = element_text(size = 10, color = "black"),
axis.title.x = element_text(size = 12, color = "black")
)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
coefplot_mean_state
# building model
state_model <-
lmer(
NA_sum ~ age + gender + beep + day +
event_unpleasantness_centered * rumination_centered +
(event_unpleasantness_centered | id), data = dat_model
)
# model outputs
summary(state_model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: NA_sum ~ age + gender + beep + day + event_unpleasantness_centered *
## rumination_centered + (event_unpleasantness_centered | id)
## Data: dat_model
##
## REML criterion at convergence: 31593.7
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.5625 -0.4499 -0.0771 0.2846 8.2712
##
## Random effects:
## Groups Name Variance Std.Dev. Corr
## id (Intercept) 0.86414 0.9296
## event_unpleasantness_centered 0.02793 0.1671 0.66
## Residual 0.48929 0.6995
## Number of obs: 14265, groups: id, 247
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) 0.4238103 0.1637515 2.588
## age -0.0090868 0.0039334 -2.310
## genderMale -0.2758397 0.1338196 -2.061
## genderOther -0.1560593 0.7273910 -0.215
## beep 0.0009888 0.0027650 0.358
## day -0.0045018 0.0007871 -5.720
## event_unpleasantness_centered 0.2545536 0.0129058 19.724
## rumination_centered 0.2651076 0.0066691 39.751
## event_unpleasantness_centered:rumination_centered 0.0386275 0.0038579 10.013
##
## Correlation of Fixed Effects:
## (Intr) age gndrMl gndrOt beep day evnt__ rmntn_
## age -0.912
## genderMale -0.094 -0.066
## genderOther -0.039 0.016 0.031
## beep -0.072 0.002 0.001 0.001
## day -0.043 0.001 0.002 -0.002 0.008
## evnt_nplsn_ 0.206 0.003 -0.050 0.012 0.040 0.011
## rmntn_cntrd 0.015 -0.009 -0.014 -0.005 -0.029 -0.005 -0.076
## evnt_npl_:_ -0.009 0.001 0.006 -0.001 -0.005 0.022 -0.031 -0.299
tab_model(state_model, show.std = T)
| NA sum | |||||
|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p |
| (Intercept) | 0.42 | 0.12 | 0.10 – 0.74 | 0.02 – 0.23 | 0.010 |
| age | -0.01 | -0.10 | -0.02 – -0.00 | -0.19 – -0.02 | 0.021 |
| gender [Male] | -0.28 | -0.22 | -0.54 – -0.01 | -0.43 – -0.01 | 0.039 |
| gender [Other] | -0.16 | -0.13 | -1.58 – 1.27 | -1.28 – 1.02 | 0.830 |
| beep | 0.00 | 0.00 | -0.00 – 0.01 | -0.01 – 0.01 | 0.721 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 |
|
event unpleasantness centered |
0.25 | 0.27 | 0.23 – 0.28 | 0.24 – 0.29 | <0.001 |
| rumination centered | 0.27 | 0.21 | 0.25 – 0.28 | 0.20 – 0.22 | <0.001 |
|
event unpleasantness centered × rumination centered |
0.04 | 0.04 | 0.03 – 0.05 | 0.03 – 0.05 | <0.001 |
| Random Effects | |||||
| σ2 | 0.49 | ||||
| τ00 id | 0.86 | ||||
| τ11 id.event_unpleasantness_centered | 0.03 | ||||
| ρ01 id | 0.66 | ||||
| ICC | 0.65 | ||||
| N id | 247 | ||||
| Observations | 14265 | ||||
| Marginal R2 / Conditional R2 | 0.164 / 0.708 | ||||
# assumption checks
check_collinearity(state_model)
plot_model(state_model, type = "diag")
## [[1]]
## `geom_smooth()` using formula 'y ~ x'
##
## [[2]]
## [[2]]$id
## `geom_smooth()` using formula 'y ~ x'
##
##
## [[3]]
##
## [[4]]
## `geom_smooth()` using formula 'y ~ x'
#check_model(state_model)
# visualizing predicted values
plot_model(state_model)
# goodness of fit indicators
AIC_state <- AIC(state_model)
BIC_state <- BIC(state_model)
# outputs for trait, mean state and state models
tab_model(trait_model, mean_state_model, state_model, show.std = T)
| NA sum | NA sum | NA sum | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p | std. p | Estimates | std. Beta | CI | standardized CI | p | Estimates | std. Beta | CI | standardized CI | p |
| (Intercept) | 0.22 | 0.11 | -0.12 – 0.55 | 0.01 – 0.21 | 0.211 | 0.033 | 0.14 | 0.09 | -0.11 – 0.39 | 0.01 – 0.16 | 0.277 | 0.42 | 0.12 | 0.10 – 0.74 | 0.02 – 0.23 | 0.010 |
| age | -0.00 | -0.05 | -0.01 – 0.00 | -0.14 – 0.04 | 0.252 | 0.252 | -0.00 | -0.04 | -0.01 – 0.00 | -0.10 – 0.03 | 0.290 | -0.01 | -0.10 | -0.02 – -0.00 | -0.19 – -0.02 | 0.021 |
| gender [Male] | -0.12 | -0.09 | -0.39 – 0.16 | -0.31 – 0.13 | 0.408 | 0.408 | -0.05 | -0.04 | -0.26 – 0.16 | -0.21 – 0.13 | 0.637 | -0.28 | -0.22 | -0.54 – -0.01 | -0.43 – -0.01 | 0.039 |
| gender [Other] | 0.05 | 0.04 | -1.39 – 1.49 | -1.12 – 1.20 | 0.946 | 0.946 | 0.17 | 0.14 | -0.95 – 1.30 | -0.77 – 1.05 | 0.761 | -0.16 | -0.13 | -1.58 – 1.27 | -1.28 – 1.02 | 0.830 |
| beep | 0.01 | 0.01 | -0.00 – 0.01 | -0.00 – 0.02 | 0.081 | 0.081 | 0.00 | 0.01 | -0.00 – 0.01 | -0.00 – 0.02 | 0.093 | 0.00 | 0.00 | -0.00 – 0.01 | -0.01 – 0.01 | 0.721 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 | <0.001 | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 |
|
event unpleasantness centered |
0.31 | 0.32 | 0.28 – 0.33 | 0.29 – 0.35 | <0.001 | <0.001 | 0.31 | 0.32 | 0.28 – 0.33 | 0.29 – 0.35 | <0.001 | 0.25 | 0.27 | 0.23 – 0.28 | 0.24 – 0.29 | <0.001 |
| trait rumination | 0.36 | 0.28 | 0.22 – 0.49 | 0.18 – 0.38 | <0.001 | <0.001 | ||||||||||
|
event unpleasantness centered × trait rumination |
0.08 | 0.08 | 0.05 – 0.11 | 0.05 – 0.11 | <0.001 | <0.001 | ||||||||||
|
mean state rumi grand centered |
0.91 | 0.52 | 0.79 – 1.03 | 0.45 – 0.58 | <0.001 | |||||||||||
|
event unpleasantness centered × mean state rumi grand centered |
0.12 | 0.09 | 0.09 – 0.16 | 0.06 – 0.12 | <0.001 | |||||||||||
| rumination centered | 0.27 | 0.21 | 0.25 – 0.28 | 0.20 – 0.22 | <0.001 | |||||||||||
|
event unpleasantness centered × rumination centered |
0.04 | 0.04 | 0.03 – 0.05 | 0.03 – 0.05 | <0.001 | |||||||||||
| Random Effects | ||||||||||||||||
| σ2 | 0.56 | 0.56 | 0.49 | |||||||||||||
| τ00 | 0.78 id | 0.42 id | 0.86 id | |||||||||||||
| τ11 | 0.03 id.event_unpleasantness_centered | 0.03 id.event_unpleasantness_centered | 0.03 id.event_unpleasantness_centered | |||||||||||||
| ρ01 | 0.59 id | 0.51 id | 0.66 id | |||||||||||||
| ICC | 0.60 | 0.46 | 0.65 | |||||||||||||
| N | 247 id | 247 id | 247 id | |||||||||||||
| Observations | 14265 | 14265 | 14265 | |||||||||||||
| Marginal R2 / Conditional R2 | 0.188 / 0.674 | 0.372 / 0.659 | 0.164 / 0.708 | |||||||||||||
coefplot_state <-
plot_model(state_model,
type = "std",
rm.terms = c("age", "gender [Male]", "gender [Other]", "beep", "day", "event_unpleasantness_centered"),
ci.lvl = 0.95,
std.est = T,
title = "",
show.values = TRUE,
colors = "black",
axis.labels = c("State rumination * Perceived stress", "State rumination"),
axis.title = "Standardized β coefficients"
) +
ylim(0, 0.6) +
theme_minimal() +
theme(axis.line = element_line(size = .3),
axis.text = element_text(size = 10, color = "black"),
axis.title.x = element_text(size = 12, color = "black")
)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
coefplot_state
# building model
full_model <-
lmer(
NA_sum ~ age + gender + beep + day +
event_unpleasantness_centered * rumination_centered +
event_unpleasantness_centered * mean_state_rumi_grand_centered +
event_unpleasantness_centered * trait_rumination +
(event_unpleasantness_centered * rumination_centered | id), data = dat_model,
control = lmerControl(optCtrl=list(ftol_abs=1e-8,xtol_abs=1e-8))
)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge with max|grad| = 0.00632854 (tol = 0.002, component 1)
# model outputs
summary(full_model)
## Linear mixed model fit by REML ['lmerMod']
## Formula: NA_sum ~ age + gender + beep + day + event_unpleasantness_centered *
## rumination_centered + event_unpleasantness_centered * mean_state_rumi_grand_centered +
## event_unpleasantness_centered * trait_rumination + (event_unpleasantness_centered *
## rumination_centered | id)
## Data: dat_model
## Control:
## lmerControl(optCtrl = list(ftol_abs = 0.00000001, xtol_abs = 0.00000001))
##
## REML criterion at convergence: 30831.5
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -4.8435 -0.4461 -0.0838 0.2763 8.6704
##
## Random effects:
## Groups Name Variance Std.Dev.
## id (Intercept) 0.433417 0.65834
## event_unpleasantness_centered 0.020676 0.14379
## rumination_centered 0.030910 0.17581
## event_unpleasantness_centered:rumination_centered 0.004586 0.06772
## Residual 0.457525 0.67641
## Corr
##
## 0.58
## 0.37 0.03
## -0.21 -0.09 -0.31
##
## Number of obs: 14265, groups: id, 247
##
## Fixed effects:
## Estimate
## (Intercept) 0.0756341
## age -0.0020003
## genderMale 0.0240987
## genderOther 0.1904986
## beep 0.0006876
## day -0.0039193
## event_unpleasantness_centered 0.2476894
## rumination_centered 0.2753280
## mean_state_rumi_grand_centered 0.8390301
## trait_rumination 0.1332307
## event_unpleasantness_centered:rumination_centered 0.0317497
## event_unpleasantness_centered:mean_state_rumi_grand_centered 0.0616133
## event_unpleasantness_centered:trait_rumination 0.0411148
## Std. Error t value
## (Intercept) 0.1272319 0.594
## age 0.0030174 -0.663
## genderMale 0.1038705 0.232
## genderOther 0.5471433 0.348
## beep 0.0026971 0.255
## day 0.0007744 -5.061
## event_unpleasantness_centered 0.0116109 21.333
## rumination_centered 0.0167922 16.396
## mean_state_rumi_grand_centered 0.0609793 13.759
## trait_rumination 0.0513502 2.595
## event_unpleasantness_centered:rumination_centered 0.0078451 4.047
## event_unpleasantness_centered:mean_state_rumi_grand_centered 0.0170833 3.607
## event_unpleasantness_centered:trait_rumination 0.0131559 3.125
##
## Correlation matrix not shown by default, as p = 13 > 12.
## Use print(x, correlation=TRUE) or
## vcov(x) if you need it
## optimizer (nloptwrap) convergence code: 0 (OK)
## Model failed to converge with max|grad| = 0.00632854 (tol = 0.002, component 1)
tab_model(full_model, show.std = T)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge with max|grad| = 0.00403381 (tol = 0.002, component 1)
| NA sum | ||||||
|---|---|---|---|---|---|---|
| Predictors | Estimates | std. Beta | CI | standardized CI | p | std. p |
| (Intercept) | 0.08 | 0.07 | -0.17 – 0.33 | -0.00 – 0.15 | 0.552 | 0.057 |
| age | -0.00 | -0.02 | -0.01 – 0.00 | -0.09 – 0.04 | 0.507 | 0.508 |
| gender [Male] | 0.02 | 0.02 | -0.18 – 0.23 | -0.14 – 0.18 | 0.817 | 0.816 |
| gender [Other] | 0.19 | 0.15 | -0.88 – 1.26 | -0.71 – 1.02 | 0.728 | 0.728 |
| beep | 0.00 | 0.00 | -0.00 – 0.01 | -0.01 – 0.01 | 0.799 | 0.799 |
| day | -0.00 | -0.03 | -0.01 – -0.00 | -0.04 – -0.02 | <0.001 | <0.001 |
|
event unpleasantness centered |
0.25 | 0.26 | 0.22 – 0.27 | 0.24 – 0.28 | <0.001 | <0.001 |
| rumination centered | 0.28 | 0.22 | 0.24 – 0.31 | 0.19 – 0.24 | <0.001 | <0.001 |
|
mean state rumi grand centered |
0.84 | 0.48 | 0.72 – 0.96 | 0.41 – 0.54 | <0.001 | <0.001 |
| trait rumination | 0.13 | 0.10 | 0.03 – 0.23 | 0.03 – 0.18 | 0.009 | 0.009 |
|
event unpleasantness centered × rumination centered |
0.03 | 0.03 | 0.02 – 0.05 | 0.02 – 0.05 | <0.001 | <0.001 |
|
event unpleasantness centered × mean state rumi grand centered |
0.06 | 0.05 | 0.03 – 0.10 | 0.02 – 0.07 | <0.001 | <0.001 |
|
event unpleasantness centered × trait rumination |
0.04 | 0.04 | 0.02 – 0.07 | 0.02 – 0.07 | 0.002 | 0.002 |
| Random Effects | ||||||
| σ2 | 0.46 | |||||
| τ00 id | 0.43 | |||||
| τ11 id.event_unpleasantness_centered | 0.02 | |||||
| τ11 id.rumination_centered | 0.03 | |||||
| τ11 id.event_unpleasantness_centered:rumination_centered | 0.00 | |||||
| ρ01 | 0.58 | |||||
| 0.37 | ||||||
| -0.21 | ||||||
| ICC | 0.52 | |||||
| N id | 247 | |||||
| Observations | 14265 | |||||
| Marginal R2 / Conditional R2 | 0.424 / 0.725 | |||||
# assumption checks
check_collinearity(full_model)
plot_model(state_model, type = "diag")
## [[1]]
## `geom_smooth()` using formula 'y ~ x'
##
## [[2]]
## [[2]]$id
## `geom_smooth()` using formula 'y ~ x'
##
##
## [[3]]
##
## [[4]]
## `geom_smooth()` using formula 'y ~ x'
#check_model(full_model)
# visualizing predicted values
plot_model(full_model)
# goodness of fit indicators
AIC_full <- AIC(full_model)
BIC_full <- BIC(full_model)
# plot for interactions (colored afterwards in photoshop)
coefplot_interactions <-
plot_model(full_model,
type = "std",
rm.terms = c("rumination_centered", "trait_rumination", "mean_state_rumi_grand_centered", "age", "gender [Male]", "gender [Other]", "beep", "day", "event_unpleasantness_centered"),
ci.lvl = 0.95,
std.est = T,
title = "",
show.values = TRUE,
colors = "black",
axis.labels = c("Trait rumination * Perceived stress", "Mean state rumination * Perceived stress", "State rumination * Perceived stress"),
axis.title = "Standardized β coefficients"
) +
ylim(0, 0.1) +
theme_minimal() +
theme(axis.text = element_text(size = 10, color = "black"),
axis.title.x = element_text(size = 12, color = "black"),
axis.line = element_line(size = .3)
)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge with max|grad| = 0.00403381 (tol = 0.002, component 1)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
coefplot_interactions
# plot for main effects (colored afterwards in photoshop)
coefplot_maineffects <-
plot_model(full_model,
type = "std",
terms = c("rumination_centered", "mean_state_rumi_grand_centered", "trait_rumination"),
ci.lvl = 0.95,
std.est = TRUE,
title = "",
show.values = TRUE,
colors = "black",
axis.labels = c("Trait rumination", "Mean state rumination", "State rumination"),
axis.title = "Standardized β coefficients"
) +
ylim(0, 1) +
theme_minimal() +
theme(axis.text = element_text(size = 10, color = "black"),
axis.title.x = element_text(size = 12, color = "black"),
axis.line = element_line(size = .3)
)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
## Model failed to converge with max|grad| = 0.00403381 (tol = 0.002, component 1)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
coefplot_maineffects
saveRDS(full_model, "saved_models/full_model.rds")